package com.monkey.thread.singlton;

/**
 * User: zhangqi
 * Date: 2024/8/19
 *
 * @Description:单例-懒汉模式
 */

public class LazySinglton {

    /**
     * 1.私有化构造方法
     * 2.私有化 静态化 volatile修饰实例
     * 3.提供一个外部获取实例的方法
     */
    private static volatile LazySinglton INSTANCE=null;

    /**
     * 私有化构造方法
     */
    private LazySinglton() {
    }
    public static LazySinglton getInstance(){
        if(INSTANCE==null){
            //这里可能有两个线程等待 因此要加两个NULL判断
            synchronized (LazySinglton.class){
                if(INSTANCE==null){
                    INSTANCE=new LazySinglton();
                }
            }
        }
        return INSTANCE;
    }
}
